package com.tms.control;

import com.tms.domain.Type;
import com.tms.service.TypeService;
import com.tms.utils.Data;
import com.tms.utils.JsonResult;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;
import java.util.Map;

import static com.tms.core.constants.TypeConstants.*;
import static com.tms.core.constants.TypeConstants.ERROR_EXIST_TYPE;


/**
 * 模具定义的类别
 */
@RestController
@RequestMapping("/api/types")
public class TypeController extends BaseController {

    @Autowired
    TypeService typeService;

    @GetMapping
    public JsonResult getAllTypes() {
        List<Type> types = typeService.findAlls();
        //如果找到的 types 是空的
        if (types.isEmpty()) {
            return new JsonResult(ERROR_NOT_FOUND.getStatus(), ERROR_NOT_FOUND.getDesc());
        }
        return new JsonResult(SUCCESS.getStatus(), SUCCESS.getDesc(), new Data("types", types));
    }

    @PostMapping
    public JsonResult addType(@RequestBody Map<String, String> map) {
        String name = map.get("name");
        //如果传入的参数 name 为空
        if (name == null || name.isEmpty()) {
            return new JsonResult(ERROR_NULL_NAME.getStatus(), ERROR_NULL_NAME.getDesc());
        }
        //判断是否存在该 name 的type，存在则返回错误信息已存在，不存在则进行添加
        Type type = typeService.findByName(name);
        if(type == null){
            type = new Type();
            type.setName(name);
            typeService.addType(type);
            //判断是否添加成功，依据是成功添加会将分配的 id 值 set 到 type 的 id
            if (type.getId() == 0) {
                return new JsonResult(ERROR.getStatus(), ERROR.getDesc());
            }
            return new JsonResult(SUCCESS.getStatus(), SUCCESS.getDesc(), new Data(type));
        }else{
            return new JsonResult(ERROR_EXIST_TYPE.getStatus(), ERROR_EXIST_TYPE.getDesc());
        }
    }

}